/**
 * 
 */
package br.coppe.coimbra.readability.category;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;

import br.coppe.coimbra.document.doc.DocumentReader;
import br.coppe.coimbra.readability.score.Score;

/**
 * @author phillipe
 *
 */
public class Cat {

	 HashMap<String, String> legibilidade = new HashMap<String, String>();
	 HashMap<String, String> escolaridade = new HashMap<String, String>();
	
	public Cat() throws FileNotFoundException, IOException {
		
		String[] ll = Table.legibilidade.trim().split("\n");
		String[] le = Table.escolaridade.trim().split("\n");
		
		for (String l : ll)
			this.legibilidade.put(l.trim().split(";")[0], l.trim());
		
		for (String e: le)
			this.escolaridade.put(e.trim().split(";")[0], e.trim());
		
		
	}
	
	
	public String[] categorize(File file) {
		
		String docText = DocumentReader.read(file);
		
		double readingEase = Score.fleschKincaidReadingEase(docText);
		String re = Double.toString(readingEase);
		double gradeLevel = Score.fleschKincaidGradeLevel(docText);
		String gl = Double.toString(gradeLevel);
		
		String leg = searchLegibilidade(readingEase);
		
		String gra = searchEscolaridade(gradeLevel);
		
		return new String[]{file.getName(),  re, gl, leg, gra};
	}
	
	private  String searchLegibilidade(double re) {
		
		if (re <= 100 && re >75)
			return legibilidade.get("100-75");
		else if (re > 50)
			return legibilidade.get("75-50");
		else if (re > 37.5)
			return legibilidade.get("50-37.5");
		else if (re > 25)
			return legibilidade.get("37.5-25");
		else
			return legibilidade.get("25-0");
	}
	
	private  String searchEscolaridade(double gl) {
		
		if (gl > 15)
			return escolaridade.get("15 anos ou mais");
		else if (gl > 11)
			return escolaridade.get("11 a 14 anos");
		else if (gl > 9)
			return escolaridade.get("9 a 10 anos");
		else if (gl > 4)
			return escolaridade.get("4 a 8 anos");
		else if (gl > 1)
			return escolaridade.get("1 a 3 anos");
		else
			return escolaridade.get("Sem instrução e menos de 1 ano");
	}
}
